From: Florian Müllner Date: Fri, 16 Jun 2017 15:08:07 +0000 (+0200) Subject: system: Emulate click action button release X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~275 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=2339c39ae6cfa16e6440c6c06df38ca17e1586d9;p=gnome-shell.git system: Emulate click action button release Since commit 2c070d38, we add a ClickAction to the visible AltSwitcher button to track long-presses. As a result, we now have two components that will grab and ungrab the pointer for the button, so to make sure we don't end up with a stuck grab, we need to release the second's component grab when the first activates. Currently we only drop the StButton grab on long-press, we also need to cancel any initiated long-press on click. https://bugzilla.gnome.org/show_bug.cgi?id=781738 --- diff --git a/js/ui/status/system.js b/js/ui/status/system.js index 92ccf4c48..8f99865e6 100644 --- a/js/ui/status/system.js +++ b/js/ui/status/system.js @@ -42,9 +42,15 @@ const AltSwitcher = new Lang.Class({ _init: function(standard, alternate) { this._standard = standard; this._standard.connect('notify::visible', Lang.bind(this, this._sync)); + if (this._standard instanceof St.Button) + this._standard.connect('clicked', + () => { this._clickAction.release(); }); this._alternate = alternate; this._alternate.connect('notify::visible', Lang.bind(this, this._sync)); + if (this._alternate instanceof St.Button) + this._alternate.connect('clicked', + () => { this._clickAction.release(); }); this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));